home *** CD-ROM | disk | FTP | other *** search
/ Visual Cafe 3 / Visual Cafe 3.ISO / Vcafe / JFC.bin / MotifTreeUI.java < prev    next >
Text File  |  1998-06-30  |  5KB  |  161 lines

  1. /*
  2.  * @(#)MotifTreeUI.java    1.11 98/02/02
  3.  * 
  4.  * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
  5.  * 
  6.  * This software is the confidential and proprietary information of Sun
  7.  * Microsystems, Inc. ("Confidential Information").  You shall not
  8.  * disclose such Confidential Information and shall use it only in
  9.  * accordance with the terms of the license agreement you entered into
  10.  * with Sun.
  11.  * 
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  13.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  14.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  15.  * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
  16.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
  17.  * THIS SOFTWARE OR ITS DERIVATIVES.
  18.  * 
  19.  */
  20.  
  21. package com.sun.java.swing.plaf.motif;
  22.  
  23. import java.awt.*;
  24. import java.awt.event.*;
  25.  
  26. import java.io.*;
  27. import java.util.*;
  28.  
  29. import com.sun.java.swing.*;
  30. import com.sun.java.swing.plaf.*;
  31. import com.sun.java.swing.tree.*;
  32. import com.sun.java.swing.plaf.basic.*;
  33.  
  34. /**
  35.  * Motif rendition of the tree component.
  36.  * <p>
  37.  * Warning: serialized objects of this class will not be compatible with
  38.  * future swing releases.  The current serialization support is appropriate
  39.  * for short term storage or RMI between Swing1.0 applications.  It will
  40.  * not be possible to load serialized Swing1.0 objects with future releases
  41.  * of Swing.  The JDK1.2 release of Swing will be the compatibility
  42.  * baseline for the serialized form of Swing objects.
  43.  *
  44.  * @version 1.11 02/02/98
  45.  * @author Jeff Dinkins
  46.  */
  47. public class MotifTreeUI extends BasicTreeUI
  48. {
  49.     static final int HALF_SIZE = 7;
  50.     static final int SIZE = 14;
  51.     static final int ROW_HEIGHT = 18;
  52.  
  53.     /**
  54.      * creates a UI object to represent a Motif Tree widget
  55.      */
  56.     public MotifTreeUI() {
  57.     super();
  58.     }
  59.  
  60.     public void installUI(JComponent c) {
  61.     super.installUI(c);
  62.     setRowHeight(ROW_HEIGHT);
  63.     }
  64.  
  65.     // BasicTreeUI overrides
  66.   
  67.     protected void drawVerticalLine( Graphics g, JComponent c, int x, int top, int bottom )
  68.       {
  69.     g.fillRect( x - 1, top, 2, bottom - top );
  70.       }
  71.  
  72.     protected void drawHorizontalLine( Graphics g, JComponent c, int y, int left, int right )
  73.       {
  74.     g.fillRect( left - 1, y, right - left, 2 );
  75.       }
  76.  
  77.  
  78.     /**
  79.      * The minus sign button icon.
  80.      * <p>
  81.      * Warning: serialized objects of this class will not be compatible with
  82.      * future swing releases.  The current serialization support is appropriate
  83.      * for short term storage or RMI between Swing1.0 applications.  It will
  84.      * not be possible to load serialized Swing1.0 objects with future releases
  85.      * of Swing.  The JDK1.2 release of Swing will be the compatibility
  86.      * baseline for the serialized form of Swing objects.
  87.      */
  88.     public static class MotifExpandedIcon implements Icon, Serializable {
  89.     static Color bg;
  90.     static Color fg;
  91.     static Color highlight;
  92.     static Color shadow;
  93.  
  94.     public MotifExpandedIcon() {
  95.         bg = UIManager.getColor("Tree.iconBackground");
  96.         fg = UIManager.getColor("Tree.iconForeground");
  97.         highlight = UIManager.getColor("Tree.iconHighlight");
  98.         shadow = UIManager.getColor("Tree.iconShadow");
  99.     }
  100.  
  101.         public static Icon createExpandedIcon() {
  102.         return new MotifExpandedIcon();
  103.         }
  104.  
  105.     public void paintIcon(Component c, Graphics g, int x, int y) {
  106.         g.setColor(highlight);
  107.         g.drawLine(x, y, x+SIZE-1, y);
  108.         g.drawLine(x, y+1, x, y+SIZE-1);
  109.  
  110.         g.setColor(shadow);
  111.         g.drawLine(x+SIZE-1, y+1, x+SIZE-1, y+SIZE-1);
  112.         g.drawLine(x+1, y+SIZE-1, x+SIZE-1, y+SIZE-1);
  113.  
  114.         g.setColor(bg);
  115.         g.fillRect(x+1, y+1, SIZE-2, SIZE-2);
  116.  
  117.         g.setColor(fg);
  118.         g.drawLine(x+3, y+HALF_SIZE-1, x+SIZE-4, y+HALF_SIZE-1);
  119.         g.drawLine(x+3, y+HALF_SIZE, x+SIZE-4, y+HALF_SIZE);
  120.     }
  121.  
  122.     public int getIconWidth() { return SIZE; }
  123.     public int getIconHeight() { return SIZE; }
  124.     }
  125.  
  126.     /**
  127.      * The plus sign button icon.
  128.      * <p>
  129.      * Warning: serialized objects of this class will not be compatible with
  130.      * future swing releases.  The current serialization support is appropriate
  131.      * for short term storage or RMI between Swing1.0 applications.  It will
  132.      * not be possible to load serialized Swing1.0 objects with future releases
  133.      * of Swing.  The JDK1.2 release of Swing will be the compatibility
  134.      * baseline for the serialized form of Swing objects.
  135.      */
  136.     public static class MotifCollapsedIcon extends MotifExpandedIcon {
  137.         public static Icon createCollapsedIcon() {
  138.         return new MotifCollapsedIcon();
  139.         }
  140.  
  141.     public void paintIcon(Component c, Graphics g, int x, int y) {
  142.         super.paintIcon(c, g, x, y);
  143.         g.drawLine(x + HALF_SIZE-1, y + 3, x + HALF_SIZE-1, y + (SIZE - 4));
  144.         g.drawLine(x + HALF_SIZE, y + 3, x + HALF_SIZE, y + (SIZE - 4));
  145.     }
  146.     }
  147.     
  148.     public static ComponentUI createUI(JComponent x) {
  149.     return new MotifTreeUI();
  150.     }
  151.  
  152.     /**
  153.      * Returns the default cell renderer that is used to do the
  154.      * stamping of each node.
  155.      */
  156.     public TreeCellRenderer getDefaultCellRenderer() {
  157.     return new MotifTreeCellRenderer();
  158.     }
  159.  
  160. }
  161.